package com.xfg.domain.strategy.service.rule.tree.Impl;

import com.xfg.domain.strategy.model.valobj.RuleLogicCheckTypeV0;
import com.xfg.domain.strategy.service.rule.tree.ILogicTreeNode;
import com.xfg.domain.strategy.service.rule.tree.factory.DefaultTreeFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * 奖品库存节点
 */

@Slf4j
@Component("rule_stock")
public class RuleStockLogicTreeNode implements ILogicTreeNode {
    // 库存锁节点（RuleStockLogicTreeNode）
    //行为：直接拦截（TAKE_OVER），不放行。
    //原因：库存锁节点的作用是确保奖品的库存充足。如果库存不足，应该立即停止后续的流程，避免用户参与抽奖但无法获得奖品的情况。
    //设计意图：通过返回 TAKE_OVER，表示该节点已经处理了结果，不需要再继续执行后续的逻辑。这可以防止资源浪费和用户体验问题。
    @Override
    public DefaultTreeFactory.TreeActionEntity logic(String userId, Long strategyId, Integer awardId) {
        return DefaultTreeFactory.TreeActionEntity.builder()
                .ruleLogicCheckType(RuleLogicCheckTypeV0.TAKE_OVER)
                .build();
    }
}
